import type {
  EntityApi,
  EntityReq,
  EntityModel,
  EntityList,
  EntityPage,
  EntityTotal,
  EntityKey,
  EntityKeyList,
  EntityCreateReq,
  EntityUpdateReq,
  EntityExportReq,
} from "jmash-core";

// 消息应用配置接口
export interface SmsAppConfigApi extends EntityApi {}

// 消息应用配置查询
export interface SmsAppConfigReq extends EntityReq {
  // 租户
  tenant?: string;
  // 当前页码
  currentPage?: number;
  // 每页记录数
  pageSize?: number;
  // 排序名称.
  orderName?: string;
  // 是否升序排序
  orderAsc?: boolean;
  // 是否包含默认
  hasIsDefault?: boolean;
  // 是否默认.
  isDefault?: boolean;
  // 是否指定服务厂商
  hasProvider?: boolean;
  // 服务厂商
  provider?: string;
  // 是否包含消息类型.
  hasConfigType?: boolean;
  // 消息类型
  configType?: string;
}

// 消息应用配置实体
export interface SmsAppConfigModel extends EntityModel {
  //  应用配置Code
  configCode?: string;
  //  配置名称
  configName?: string;
  //  配置类型
  configType?: string;
  //  服务厂商
  provider?: string;
  //  是否默认
  isDefault?: boolean;
  //  访问key
  accessKeyId?: string;
  //  访问密钥
  accessKeySecret?: string;
  //  创建人
  createBy?: string;
  //  创建时间
  createTime?: string;
}

//消息应用配置列表
export interface SmsAppConfigList extends EntityList {
  // 内容
  results: Array<SmsAppConfigModel>;
}

// 消息应用配置分页
export interface SmsAppConfigPage extends EntityPage {
  // 当前页内容
  results: Array<SmsAppConfigModel>;
  // 当前页码
  curPage: number;
  // 页码尺寸
  pageSize: number;
  // 总记录数
  totalSize: number;
  // 总页数
  pageCount: number;
  // 本页小计
  subTotalDto: SmsAppConfigModelTotal;
  // 合计
  totalDto: SmsAppConfigModelTotal;
}
// 发送邮件
export interface EmailBasicReq extends EntityReq  {
  // 租户
  tenant?: string;
  // 账户名
  accountName?: string;
  // 电子邮件
  email?: string;
  // 邮件主题
  subject?: string;
  // 邮件 html 正文
  htmlBody?: string;
  // 邮件 text 正文
  textBody?: string;
  // 回信地址(可选)
  replyAddress?: string;
  // 是否指定服务厂商
  hasProvider?: boolean;
  // 服务厂商
  provider?: string;
  // 邮件内容
  content?: string;
 //  应用配置Code
 configCode?: string;
}
// 发送结果
export interface smsSmsResp {
  // 是否成功
  success?: boolean;
  // 测试结果
  reason?: string;
}
// 合计
export interface SmsAppConfigModelTotal extends EntityTotal {
  // 总记录数
  totalSize: number;
}

// 消息应用配置主键
export interface SmsAppConfigKey extends EntityKey {
  // 租户
  tenant?: string;
  configCode?: string;
}

//消息应用配置List
export interface SmsAppConfigKeyList extends EntityKeyList {
  // 租户
  tenant?: string;
  configCode?: Array<string>;
}

// 消息应用配置新增实体
export interface SmsAppConfigCreateReq extends EntityCreateReq {
  // 应用配置Code
  configCode?: string;
  // 配置名称
  configName?: string;
  // 配置类型
  configType?: string;
  // 服务厂商
  provider?: string;
  // 是否默认
  isDefault?: boolean;
  // 访问key
  accessKeyId?: string;
  // 访问密钥
  accessKeySecret?: string;
  // 邮件账户名
  accountName?: string;
}

// 消息应用配置修改实体
export interface SmsAppConfigUpdateReq extends EntityUpdateReq {
  // 主键
  requestId?: string;
  // 应用配置Code
  configCode?: string;
  // 配置名称
  configName?: string;
  // 配置类型
  configType?: string;
  // 服务厂商
  provider?: string;
  // 是否默认
  isDefault?: boolean;
  // 访问key
  accessKeyId?: string;
  // 访问密钥
  accessKeySecret?: string;
   // 邮件账户名
   accountName?: string;
}

export type SmsAppConfigFormReq = SmsAppConfigCreateReq | SmsAppConfigUpdateReq;

// 导出请求
export interface SmsAppConfigExportReq extends EntityExportReq {
  // 筛选条件
  req: SmsAppConfigReq;
}


// 上移下移
export interface SmsAppConfigMoveKey {
  // 租户
  tenant?: string;
  configCode?: string;
  up?: boolean;
}

// 启用/禁用
export interface SmsAppConfigEnableKey {
  // 租户
  tenant?: string;
  configCode?: string;
  enable?: boolean;
}
